/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Interfaz;

import GUI.Factura;
import Motor.Cliente;
import Motor.Empleado;
import Motor.Gondola;
import Motor.Pedido;
import Motor.Producto;
import Motor.Seccion;
import Motor.Sucursal;
import Motor.Suplidor;
import Persistencia.DAOEmpleadoXML;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

/**
 *
 * @author Davielis
 */
public class ControlDavielis implements InterfazControl {

	private List<Gondola> listaGondolas = new ArrayList<Gondola>();
	private List<Cliente> listaClientes = new ArrayList<Cliente>();
	private List<Sucursal> listaSucursales = new ArrayList<Sucursal>();
	private List<Producto> listaProductos = new ArrayList<Producto>();
	private List<Suplidor> listaSuplidores = new ArrayList<Suplidor>();
	private List<Factura> listaFacturas = new ArrayList<Factura>();
	private List<Empleado> listaEmpleados = new ArrayList<Empleado>();
	private List<Seccion> listaSecciones = new ArrayList<Seccion>();
	private List<Pedido> listaPedidos = new ArrayList<Pedido>();
	private int controlFacturas=0;	

	public boolean registrarCliente(Cliente cliente) {

		for (Cliente cli : getListaClientes())
		{
			System.out.print(" entro en registrarcliente ");
			if (cli.getCedula().equals(cliente.getCedula()))
			{
				return false;
			}
		}
		getListaClientes().add(cliente);
		return true;
	}

	public Cliente loginCliente(String nombreUsuario, String password) {

		
		for (Cliente cliente :listaClientes) {


			if (cliente.getLogin().equals(nombreUsuario) && cliente.getPassword().equals(password)) {

				return cliente;

			}

		}

		return null;
	}

	public Empleado loginEmpleado(String nombreUsuario, String password) {

		for (Empleado empleado : listaEmpleados)
		{
			if ( (empleado.getLogin().equals(nombreUsuario) )&& (empleado.getPassword().equals(password)))
			{
				return empleado;
			}
		}
		return null;
	}

	public List<Cliente> todosLosClientes() {
		return getListaClientes();
	}

	public List<Producto> todosLosProductos() {

		return (getListaProductos());
	}

	private void imprimir(List<Cliente> clientes) {
		for (Cliente cliente : clientes) {
			System.out.println("+ " + cliente);
		}
	}

	public Cliente buscarCliente(Integer cedula) {
		for (Cliente cli : getListaClientes()) {
			if (Integer.parseInt(cli.getCedula()) == cedula) {
				return cli;
			}
		}
		return null; // si cliente es nulo es porque no se encontro
	}

	public boolean registrarEmpleado(Empleado empleado) {
		for (Empleado empleado1 : getListaEmpleados()) {

			if (empleado1.getCedula().equals(empleado.getCedula())) {
				return false;
			}
		}
		getListaEmpleados().add(empleado);
		return true;
	}

	public List<Empleado> todosLosEmpleados()
	{
		return listaEmpleados;
	}

	public Empleado buscarEmpleado(Integer cedula) {
		for (Empleado emple : getListaEmpleados())
		{
			if (Integer.parseInt(emple.getCedula()) == cedula)
				return emple;
		}
		return null;
	}

	public void escribirEmpleado() {
		DAOEmpleadoXML empleadoDao = new DAOEmpleadoXML();
		for (Empleado empleado2 : getListaEmpleados()) {
			try {
				empleadoDao.agregarEmpleado(empleado2);
			} catch (IOException ex) {
			}
		}

	}

	public Empleado buscarEmpleadoLogin(String usuario, String contrasena) {
		DAOEmpleadoXML empleado = new DAOEmpleadoXML();
		return empleado.buscarEmpleadoLogin(usuario, contrasena);
	}


	public boolean borrarEmpleado(Integer cedula)
	{
//		DAOEmpleadoXML empleado = new DAOEmpleadoXML();
//		return empleado.borrarEmpleado(cedula);
		for (Empleado empleado : listaEmpleados)
		{
			if (Integer.parseInt(empleado.getCedula()) == cedula)
			{
				listaEmpleados.remove(empleado);
				return true;
			}
		}
		return false; // No encontro el empleado a eliminar
	}

	public boolean registrarProducto(Producto producto) {
		for (Producto pro : getListaProductos()) {
			if (pro.getIdProducto() == producto.getIdProducto()) {
				return false;
			}
		}
		getListaProductos().add(producto);
		return true;
	}

	public Producto buscarProducto(Integer idProducto) {
		for (Producto pro : getListaProductos())
		{
			if (pro.getIdProducto() == idProducto)
				return pro;
		}
		return null;
	}

	public boolean borrarProducto(Integer idProducto) {
//		DAOProductoXML producto = new DAOProductoXML();
//		return producto.borrarProducto(idProducto);
		for (Producto producto : listaProductos)
		{
			if (producto.getIdProducto() == idProducto)
			{
				listaProductos.remove(producto);
				return true;
			}
		}
		return false; // No encontro el producto a eliminar
	}

	public boolean validarSipasswordEsCorrecto(String nombreUsuario, String password) {
		throw new UnsupportedOperationException("Not supported yet.");


	}

	public boolean validarSiExisteLogin(String nombreUsuario) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	public void registrarUsuarioOnline(String nombreUsuario, String password, String nombre, String apellido, String email, int cedula, String telefono, String direccion, String sexo, Calendar fechaNaciemiento, Calendar fechaIngreso) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	public boolean compararCedula(int cedulaFuera) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	public List<Gondola> getListaGondolas() {
		return listaGondolas;
	}

	public void setListaGondolas(List<Gondola> listaGondolas) {
		this.listaGondolas = listaGondolas;
	}

	public List<Cliente> getListaClientes() {
		return listaClientes;
	}

	public void setListaClientes(List<Cliente> listaClientes) {
		this.listaClientes = listaClientes;
	}

	public List<Sucursal> getListaSucursales() {
		return listaSucursales;
	}

	public void setListaSucursales(List<Sucursal> listaSucursales) {
		this.listaSucursales = listaSucursales;
	}

	public List<Producto> getListaProductos() {
		return listaProductos;
	}

	public void setListaProductos(ArrayList<Producto> listaProductos) {
		this.listaProductos = listaProductos;
	}

	public List<Suplidor> getListaSuplidores() {
		return listaSuplidores;
	}

	public void setListaSuplidores(List<Suplidor> listaSuplidores) {
		this.listaSuplidores = listaSuplidores;
	}

	public List<Factura> getListaFacturas() {
		return listaFacturas;
	}

	public void setListaFacturas(List<Factura> listaFacturas) {
		this.listaFacturas = listaFacturas;
	}

	public List<Empleado> getListaEmpleados() {
		return listaEmpleados;
	}

	public void setListaEmpleados(List<Empleado> listaEmpleados) {
		this.listaEmpleados = listaEmpleados;
	}

	public List<Seccion> getListaSecciones() {
		return listaSecciones;
	}

	public void setListaSecciones(List<Seccion> listaSecciones) {
		this.listaSecciones = listaSecciones;
	}

	public List<Pedido> getListaPedidos() {
		return listaPedidos;
	}

	public void setListaPedidos(List<Pedido> listaPedidos) {
		this.listaPedidos = listaPedidos;
	}

	/**
	 * @return the controlFacturas
	 */ public int getControlFacturas() {
		return controlFacturas;
	}

	/**
	 * @param controlFacturas the controlFacturas to set
	 */ public void setControlFacturas(int controlFacturas) {
		this.controlFacturas = controlFacturas;
	}
}
